// 云函数模板
// 部署：在 cloud-functions/join_activity 文件夹右击选择 “上传并部署”

const cloud = require('wx-server-sdk');

// 初始化 cloud
cloud.init({
  // API 调用都保持和云函数当前所在环境一致
  env: cloud.DYNAMIC_CURRENT_ENV
});

/**
 * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端
 * 
 * event 参数包含小程序端调用传入的 data
 * 
 */
exports.main = async (event, context) => {
  console.log('[join_activity event]:', event);
  console.log('[join_activity context]:', context);

  // 可执行其他自定义逻辑
  // console.log 的内容可以在云开发云函数调用日志查看

  // 获取 WX Context (微信调用上下文)，包括 OPENID、APPID、及 UNIONID（需满足 UNIONID 获取条件）等信息
  const wxContext = cloud.getWXContext();

  const db = cloud.database();
  const _ = db.command;

  // 修改分数
  // const activity = await db.collection('activity').doc(event.activityId).get();

  // activity.data.joiners.find(item => {
  //   if (item.id === event.userId) {
  //     item.score = event.score;

  //     return true;
  //   }
  // });

  // 更新活动下用户的分数
  await db.collection('activity').where({
    _id: event.activityId,
    "joiners.id": event.userId
  })
  .update({
    data: {
      "joiners.$.score": event.score
    }
  });

  // 更新用户下活动的分数
  await db.collection('user').where({
    _id: event.userId,
    "activities.id": event.activityId
  })
  .update({
    data: {
      "activities.$.score": event.score,
      "activities.$.seasonId": event.seasonId,
    }
  });
}
